package Negocio;

import ManejoExc.EmpresaException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author Diego
 * @version 1.0
 * @created 28-sep-2013 21:39:03 p.m.
 */
public class Deposito {

    private Integer idDeposito;
    private String nombre;
    private int capacidad;
    private Set<Lote> lotes;

    public Deposito() {
    }

    public Deposito(String nombre, int capacidad) {
        this.idDeposito = idDeposito;
        this.capacidad = capacidad;
        this.nombre = nombre;
        //  this.lotes = new HashSet();
        Empresa.persistencia.insert(this);
    }

    public Integer getIdDeposito() {
        return idDeposito;
    }

    public void setIdDeposito(Integer idDeposito) {
        this.idDeposito = idDeposito;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Set<Lote> getLotes() {
        return lotes;
    }

    public void setLotes(Set<Lote> lotes) {
        this.lotes = lotes;
    }

    public void actualizar(String unNombre, int capacidad) {
        this.nombre = unNombre;
        this.capacidad = capacidad;
        Empresa.persistencia.update(this);
    }

    public void borrar() throws EmpresaException {
        if (this.getLotes().size() == 0) {
            Empresa.persistencia.delete(this);
        } else {
            throw new EmpresaException("El deposito cuenta con lotes asignados, para borrar primero quitelos");
        }

    }

    public void agregarLote(Lote unLote) {
        this.lotes.add(unLote);
        Empresa.persistencia.update(unLote);
        Empresa.persistencia.update(this);
    }

    public void quitarLote(Lote unLote) {
        this.lotes.remove(unLote);
    }

    public String toString() {
        return this.nombre;
    }

    public int getCapacidad() {
        return capacidad;
    }

    public void setCapacidad(int capacidad) {
        this.capacidad = capacidad;
    }

    public boolean estaLibre(int kilos) {
        int ocupado = 0;
        for (Lote lote : this.lotes) {
            if (lote.getYerbaMateCanchada() != null) {
                ocupado += lote.getYerbaMateCanchada().getKilaje();
            }
        }
        int libre = this.capacidad - ocupado;
        return libre >= kilos;
    }

}
